iT邦幫忙

2022 iThome 鐵人賽

DAY 4
0
自我挑戰組

System Software Introduction系列 第 4

System Software - Firmware

  • 分享至 

  • xImage
  •  

Firmware是管理hardware的software,負責在hardware上電後運作起來管理hardware。


https://ithelp.ithome.com.tw/upload/images/20230428/20152298BmQerzqd5M.jpg

How to Request Hardware Service

  • Firmware運行在hardware MCU (micro-controller unit) 或MPU (micro-processor unit)內部的CPU上
  • Firmware在bare metal環境下運作,MCU/MPU上電後內部CPU固定執行的PC (program counter) 就是firmware開始擺放的address,所以hardware device一上電,MCU/MPU就會開始執行firmware。
    • 例如: SSD內部會有SSD controller,而SSD firmware會擺放在SSD controller CPU上電之後執行的PC,這樣SSD上電後SSD firmware就會開始執行
  • Firmware會執行邏輯判斷,並且將依照邏輯判斷對hardware進行操作
    • 例如: 有資料要寫入SSD時,SSD firmware會負責找出有空位的flash,開始下指令把資料寫進flash
    • 例如: SSD firmware偵測到SSD已經空閒一段時間後,不需要外部指令就會開始定時自己執行垃圾收集(garbage collection,一種讓SSD讀寫效率更好的機制)工作,執行時會下指令給hardware對flash儲存的資料座移動、複製、刪除。

How to Service Hardware

  • Firmware負責hardware與外部的溝通
    • Firmware對外溝通是透過hardware上的hardware interface: bus (匯流排)
    • Bus是依照protocol傳輸command與data的hardware interface ,使hardware之間可以互相交換資訊與驅動對方
      - Command: hardware發出command要求收到command的hardware做事情
      - Data: hardware之間交換的資料
  • Firmware會藉由bus接收外部hardware對所在hardware發出的command與data,將command解讀完畢之後firmware依照command、data對hardware進行操作,完成後再透過bus回覆command被執行的結果
    • 例如: SSD對外部的bus介面是SATA (Serial Advanced Technology Attachment)。南橋晶片(Southbridge)對SSD讀取data的需求會透過SATA以SATA command的方式發送到SSD,SSD firmware收到SATA command並解讀之後得知SATA command需要的是哪一塊flash內存放的data,接著SSD firmware對SSD操作把對應flash存放的data讀出來再透過SATA回覆給Southbridge 。

Special cases

  • BIOS是一種firmware,專門用來協助system開機時檢查hardware是否正常,並且尋找bootable device (可開機裝置)進行開機流程的一套firmware,但提供BIOS運作的CPU並不是專用的周邊hardware CPU,而是hardware platform的CPU本身。
  • OpenSBI是一種對RISC-V SBI (RISC-V的CPU權限管理機制)進行實作的firmware,他會直接運作在hardware platform的CPU上。
  • Computer system當中,有一些CPU周邊hardware的firmware會有自己的kernel,是一套獨立的小系統
    • 例如: Marvell Wi-Fi網路卡firmware就搭載了Thread-X的kernel

上一篇
Types of System Software​
下一篇
System Software - Device Driver
系列文
System Software Introduction30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言